03 程序员修养
程序员的修养,即程序员的工程师文化,也就是程序员的价值观,因为如果你的技术修养不够,学再多的知识也是没用的。
通过 Quora 上的这个贴子开始了解程序员的修养 What are some of the most basic things every programmer should know?
- Bad architecture causes more problems than bad code.
- You will spend more time thinking than coding.
- The best programmers are always building things.
- There’s always a better way.
- Code reviews by your peers will make all of you better.
- Fewer features for better code is always the right answer in the end.
- If it’s not tested, it doesn’t work.
- Don’t reinvent the wheel, library code is there to help.
- Code that’s hard to understand is hard to maintain.
- Code that’s hard to maintain is next to useless.
- Always know how your business makes money, that determines who gets paid what.
- If you want to feel important as a software developer, work at a tech company.
97 个非常不错的编程方面的建议 97 Things Every Programmer Should Know
英文能力
计算机技术很多信息来源于英文,必须到信息的源头去学习。
- 官网上直接阅读手册
- 到 StackOverflow 上问问题
- 到 YouTube 上看很多演讲和教学
- 到 GitHub 上参与社区
- 用 Google 查询相关的知识
- 到国际名校上参加公开课……
学英语的建议
- 坚持 Google 英文关键词,而不是在 Google 里搜中文。
- 在 GitHub 上只用英文。用英文写代码注释,写 Code Commit 信息,用英文写 Issue 和 Pull Request,以及用英文写 Wiki。
- 坚持到 YouTube 上每天看一小段英文视频,重复十遍以上,做到能完全听懂和大致复述。开始几遍听不懂可打开字幕。
- 坚持用英文词典而不是中文的,推荐 剑桥英语词典。
- 坚持用英文的教材而不是中文的,比如:BBC 的 Learning English ,或 ESL: English as a Second Language 上的一些课程。
- 花钱参加一些线上的英文课程,用视频和英语母语的人练习。
问问题的能力
- 提问的智慧(How To Ask Questions The Smart Way)详细描述了发问者事前应该做好什么,而什么又是不该做的。
- 有一个经典的问题叫 X-Y Problem,是一个很容易犯的错误。
- StackOverflow 上如何问 问题的一些提示 FAQ for StackExchange Site。
作为一个程序员,不做伸手党,你必须要读一读这几篇文章,并努力践行。
写代码的修养
推荐书籍
- 《重构:改善既有代码的设计》指导如何改善既有代码的设计,以及如何从零开始构建代码的时候避免不良的代码风格。
- 《修改代码的艺术》涵盖面和深度更广更深,将理解、测试和修改代码的原理、技术和最新工具(自动化重构工具、单元测试框架、仿对象、集成测试框架等),与解依赖技术和大量开发和设计优秀代码的原则、最佳实践相结合,许多内容非常深入。这本书不仅可以帮你掌握最顶尖的修改代码技术,还可以大大提高你对代码和软件开发的领悟力。
- 《代码整洁之道》提出一种观念:代码质量与其整洁度成正比。干净的代码在质量上较为可靠,也为后期维护和升级奠定了良好基础。本书给出了一系列行之有效的整洁代码操作实践,这些实践在本书中体现为一条条规则,并辅以来自现实项目正反两面的范例 。
- 《程序员的职业素养》,本书是作者 40 余年编程生涯的心得体会,讲解成为真正专业的程序员需要什么样的态度、原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来人引路,助其职业生涯迈上更高台阶。
Code Review
推荐几篇 Code Review 相关的文章:
- Code Review Best Practices
- How Google Does Code Review
- LinkedIn’s Tips for Highly Effective Code Review
Unit Test
JUnit User Guide官网学习。另外推荐几篇文章:
- You Still Don’t Know How to Do Unit Testing
- Unit Testing Best Practices: JUnit Reference Guide
- JUnit Best Practices
安全防范
OWASP
在代码中不能有最基本的安全漏洞问题,尤其是对外暴露 Web 服务的软件。在 Web 上经常出现的安全问题可参考 OWASP。
OWASP 是一个开源的、非盈利的全球性安全组织,致力于应用软件的安全研究。其被视为 Web 应用安全领域的权威参考。
安全编程方面的一些 Guideline
- 伯克立大学的 Secure Coding Practice Guidelines
- 卡内基梅隆大学的 SEI CERT Coding Standards
- HTTP 相关的安全文章《Hardening Your HTTP Security Headers》
防御性编程
为了保证对程序的不可预见的使用,不会造成程序功能上的损坏。防御式编程主要用于 可能被滥用,恶作剧或无意地造成灾难性影响的程序上。推荐文章:
The Art of Defensive Programming
软件工程和上线
需要认真测试,并做上线前检查,以及上线后监控。
测试书籍推荐
- 《完美软件:对软件测试的各种幻想》本书重点讨论了与软件测试有关的各种心理问题及其表现与应对方法。
- 《Google 软件测试之道》描述了测试解决方案,揭示了测试架构是如何设计、实现和运行的,介绍了软件测试工程师的角色;讲解了技术测试人员应该具有的技术技能;阐述了测试工程师在产品生命周期中的职责;讲述了测试管理,并对在 Google 的测试历史上或者主要产品上发挥了重要作用的工程师的访谈。
上线前的 Checklist
运维方面
《Monitoring 101》告诉你最基本的监控线上运行软件的方法和实践。